package com.gxa.p2p.service;


import com.gxa.p2p.pojo.*;

import java.util.List;
import java.util.Map;

/**
 * @Author xhy
 * @Date 2021/10/26 14:44
 */
public interface PlatFormService {

    /**
     * 查询平台资金全部流水账
     * @param id 资金变化记录单号
     * @param type 资金类型
     * @param outOrIn 出入账记录
     * @param page 数据页码
     * @param size 每页数据数量
     * @return 返回平台资金流动记录集合
     */
    List<Platform> findAllPlatForm(Long id, String type, String outOrIn, Integer page, Integer size);

    /**
     * 查询平台资金全部流水账
     * @param id 资金变化记录单号
     * @param type 资金类型
     * @param outOrIn 出入账记录
     * @return 返回平台资金流动记录集合
     */
    List<Platform> findAllPlatForm(Long id, String type, String outOrIn);

    /**
     * 查询用户资金
     * @param name 用户名称
     * @param phone 用户电话
     * @param type 用户资金类型
     * @param page 查询数据的页数
     * @param size 每页数据条数
     * @return 返回用户资金详情
     */
    List<UserRecordVo> findPlatfromlog(String name, String phone, String type, Integer page, Integer size);

    /**
     * 查询用户资金
     * @param name 用户名称
     * @param phone 用户电话
     * @param type 用户资金类型
     * @return 返回用户资金详情
     */
    List<UserRecordVo> findPlatfromlog(String name, String phone, String type);

    /**
     * 查询用户资金
     * @param name 用户名称
     * @param phone 用户电话
     * @param type 用户资金类型
     * @param page 查询数据的页数
     * @param size 每页数据条数
     * @return 返回用户资金详情
     */
    List<UserMoneyVo> findInvestAndBorrowUser(String name, String phone, String type, Integer page, Integer size);

    /**
     * 查询用户资金
     * @param name 用户名称
     * @param phone 用户电话
     * @param type 用户资金类型
     * @return 返回用户资金详情
     */
    List<UserMoneyVo> findInvestAndBorrowUser(String name, String phone, String type);

    /**
     * 更改审核状态
     * @param id 审核单号id
     * @param state 修改审核的状态
     */
    /*void updateAuditState(Long id,String state);*/

    /**
     * 品台提现记录
     * @param outrecord 提现记录信息
     */
    void platWithdrawal(Outrecord outrecord);

    /**
     * 平台充值几率
     * @param rechargerecord 充值记录信息
     */
    void platRecharge(Rechargerecord rechargerecord);

    /**
     * 投资人充值金额
     * @param phone 投资人电话
     * @param money 投资人充值金额
     */
    void rechargeInvestUserMoney(String phone,Double money);

    /**
     * 投资人提现金额
     * @param phone 投资人电话
     * @param money 投资人提现金额
     */
    void outInvestUserMoney(String phone,Double money);

    /**
     * 查询平台资金余额
     * @return 返回平台资金余额
     */
    Double findPlatformBalance();

    /**
     * 插入平台资金表充值记录
     * @param platform 充值记录信息
     */
    void insertPlatformRecharge(Platform platform);

    List<String> findALlMoneyType();

    /**
     * xhy
     * 提现记录表
     * @param id 提现记录Id
     * @param userPhone 提现用户电话
     * @param userName 提现用户名称
     * @param bankId 提现用户银行卡号
     * @param bankName 提现用户的银行名称
     * @param from 提现记录起始时间
     * @param to 提现记录结束时间
     * @param page 分页页码
     * @param size 页内条数
     * @return 返回提现记录集合
     */
    List<Outrecord> findWithdrawlog(Long id,String userPhone,String userName,String bankId,String bankName
            ,String from,String to, Integer page, Integer size);

    /**
     * xhy
     * 提现记录表
     * @param id 提现记录Id
     * @param userPhone 提现用户电话
     * @param userName 提现用户名称
     * @param bankId 提现用户银行卡号
     * @param bankName 提现用户的银行名称
     * @param from 提现记录起始时间
     * @param to 提现记录结束时间
     * @return 返回提现记录集合
     */
    List<Outrecord> exportWithdrawlogByPage(Long id,String userPhone,String userName,String bankId,String bankName
            ,String from,String to);

    /** xhy
     * 更改审核状态
     * @param id 审核单号id
     * @param state 修改审核的状态
     */
    void updateAuditState(Long id,String state,String remarks);

    /**
     * 返回提现用户的详细信息
     * @param id 提现单号的Id
     * @return 返回提现信息map
     */
    Map selectOutrecordUser(Long id);

    /**
     * 查询该单号用户的最近记录
     * @param id 提现单号id
     * @return 返回最近记录集合
     */
    List<Outrecord> selectRecentOutrecord(Long id);
}
